<?php

/**
 * 默认控制器
 */
class Controller_User extends Controller_Abstract
{
    function actionIndex()
    {
        // 为 $this->_view 指定的值将会传递数据到视图中
		# $this->_view['text'] = 'Hello!';
    }
	function actionList(){
		$page = $this->_context->param('page',1);
    	$page_size = $this->_context->param('row',10);
    	$conditions='';
    	if($this->_context->post('key') && $this->_context->post('op') && $this->_context->post('value') ){
    		switch ($this->_context->post('op')){
    			case 'like':
    				$conditions = $this->_context->post('key').' like "%'.$this->_context->post("value").'%" ';
    				break;
    			default:
    				$conditions = $this->_context->post('key').$this->_context->post('op')."'".$this->_context->post('value')."'";	
    		}	
    	}
    	$list = User::find($conditions)->asArray()->limitPage($page, $page_size)->getAll();
    	
    	return json_encode($list);
	}
	function actionLogin(){
		if($this->_context->isPOST()){
			try
	        {
	            // 使用 acluser 插件的 validateLogin() 方法验证登录并取得有效的 user 对象
	            $user = User::meta()->validateLogin($_POST['username'], $_POST['password']);
	            // 将登录用户的信息存入 SESSION，以便应用程序记住用户的登录状态
	            $this->_app->changeCurrentUser($user->aclData(), $user->roles->name);
	            // 登录成功后，重定向浏览器
	            //return $this->_redirect(url('default/index'));
	            return json_encode(array('errorMsg'=>'ok','url'=>url('default/index')));
	        }
	        catch (AclUser_UsernameNotFoundException $ex)
	        {
	            //$form['username']->invalidate("您输入的用户名 {$form['username']->value} 不存在");
	            return json_encode(array('errorMsg' => '您输入的登录帐号不存在.'));
	        }
	        catch (AclUser_WrongPasswordException $ex)
	        {
	            //$form['password']->invalidate("您输入的密码不正确");
	            return json_encode(array('errorMsg'=> '您输入的密码不正确.'));
	        }	
		}	
	}

	function actionLogout(){
		// 清除当前用户的登录信息
	    $this->_app->cleanCurrentUser();
	    // 重定向浏览器
	    $msg="<script>top.location.href='".url('user/login')."';</script>";
	    //return $this->_redirect(url('user/login'));
	    return $msg;
			
	
	}
	function actionUpdatePass(){
		if ($this->_context->isPOST()){
	        try
	        {
	            // 取得当前用户的信息
	            $current_user = $this->_app->currentUser();
	            // 修改密码
	            User::meta()->changePassword(
	                $current_user['username'],
	                $_POST['new_password']->value,
	                $_POST['old_password']->value
	            );
	            // 重定向浏览器
	            //return $this->_redirectMessage(
	            //    '修改密码成功',
	            //    '您的登录密码已经成功修改，下次登录请使用新密码。',
	            //    url('default/index'));
	            return json_encode(array('errorMsg'=>'您的登录密码已经修改成功,下次登录 请使用新密码.'));
	        }
	        catch (AclUser_WrongPasswordException $ex)
	        {
	            //$form['old_password']->invalidate('您输入的现用密码不正确');
	            return json_encode(array('errorMsg'=>'您输入的现用密码不正确.'));
	        }
	    }
		
	}
	function actionPermission(){
		echo '权限管理';
	}
	
	
	function actionNew(){
    	
	    try {
	    	$user = new User($_POST);
	    	$user->save();
	    	
			return json_encode(array('success'=>true));
			
		} catch (QDB_ActiveRecord_ValidateFailedException $e) {			
			
			return json_encode(array('errorMsg' => $e->getMessage()));
			
		}
		catch(AclUser_DuplicateUsernameException $ex){
			return  json_encode(array('errorMsg' => '登录帐号:'.$_POST['username'].'已经存在,请选择其它名字.'));
		}
    	catch (Exception $e){
    		return json_encode(array('errorMsg'=>'系统出错,操作未能完成.'));
    	}
    }
    function actionUpdate(){
    	$id=$this->_context->post('user_id');
    	$user = User::find('user_id=?',$id)->getOne();
    	
    	$user->changeProps($_POST);
    	
    	try{
    		$user->save();
    		return  json_encode(array('success'=>true));
    	}
    	catch (QDB_ActiveRecord_ValidateFailedException $e) {			
			
			return json_encode(array('errorMsg' => $e->getMessage()));
			
		}
    	catch (Exception $e){
    		return json_encode(array('errorMsg'=>'系统出错,操作未能完成.'));
    	}
    }
    
    function actionDestroy(){
    	
    	$id=$this->_context->post('id',0);
    	$row=User::find("user_id=?",$id)->getOne();

    	try {
    		$row->destroy();
			return  json_encode(array('success'=>true));
    	}
    	catch (Exception $e){
				return json_encode(array('errorMsg'=>'系统出错,操作未能完成.'));
		}
    }
}

